package com.yitao.cms.vo.product;
import com.yitao.client.dto.product.ProductSkuDto;
import com.yitao.client.dto.product.ProductSpecificationDto;
import com.yitao.cms.utils.DateUtils;
import com.yitao.cms.utils.EmojiUtils;
import com.yitao.cms.utils.NumberUtil;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * @Auther: wwl
 * @Date: 2018/12/24 0024 16:21
 * @Description:
 */
@Data
public class ProductInfoVo  implements Serializable {
    @ApiModelProperty("商品code")
    private Long id;
    /**
     * 商品code
     */
    @ApiModelProperty("商品code")
    private String productCode;


    /**
     * 商品类型 1:普通业务类型
     */
    @ApiModelProperty("商品类型 1:普通业务类型")
    private int productType;


    /**
     * 业务类型 1:普通业务类型
     */
    @ApiModelProperty("业务类型 1:普通业务类型")
    private int businessType;


    /**
     * 推荐类型 1:首页推荐，2 猜你喜欢
     */
    @ApiModelProperty("推荐类型 1:首页推荐，2 猜你喜欢")
    private int recommendType;


    /**
     * 商品名称
     */
    @ApiModelProperty("商品名称")
    private String productName;


    /**
     * 商品别名
     */
    @ApiModelProperty("商品别名")
    private String productEnName;


    /**
     * 商品简述
     */
    @ApiModelProperty("商品简述")
    private String productDescription;


    /**
     * 品牌code
     */
    @ApiModelProperty("品牌code")
    private String brandCode;


    /**
     * 品牌名称
     */
    @ApiModelProperty("品牌名称")
    private String brandName;


    /**
     * 品牌别名
     */
    @ApiModelProperty("品牌别名")
    private String brandEnName;

    /**
     * 分类id
     */
    @ApiModelProperty("一级基础分类id")
    private long parentParentCategoryId;
    /**
     * 分类id
     */
    @ApiModelProperty("父级基础分类id")
    private long parentCategoryId;
    /**
     * 分类id
     */
    @ApiModelProperty("基础分类id")
    private long categoryId;
    @ApiModelProperty("商品运营分类数据")
   private List<ProductOperationCategoryVo> productOperationCategoryVoList;

    /**
     * 分类名称
     */
    @ApiModelProperty("分类名称")
    private String categoryName;


    @ApiModelProperty("产品产地Id")
    private Long builtPlaceId;
    /**
     * 产品产地
     */
    @ApiModelProperty("产品产地")
    private String builtPlaceName;


    /**
     * 标价币种
     */
    @ApiModelProperty("标价币种")
    private String currency;


    /**
     * 市场价
     */
    @ApiModelProperty("市场价")
    private Long markerPrice;
    @ApiModelProperty("市场价(元)")
    private Double markerPriceYuan;


    /**
     * 售价
     */
    @ApiModelProperty("售价")
    private Long salesPrice;

    @ApiModelProperty("售价(元)")
    private Double salesPriceYuan;


    /**
     * 批发价
     */
    @ApiModelProperty("批发价")
    private Long wholesalePrice;


    /**
     * 活动价
     */
    @ApiModelProperty("活动价")
    private Long activePrice;


    /**
     * 定价(用于不参与优惠活动 定价商品)
     */
    @ApiModelProperty("定价(用于不参与优惠活动 定价商品)")
    private Long fixPrice;


    /**
     * 折扣率
     */
    @ApiModelProperty("折扣率")
    private BigDecimal discount;


    /**
     * 售价类型 1:正常销售
     */
    @ApiModelProperty("售价类型 1:正常销售")
    private Integer salesPriceType;


    /**
     * 所属门店
     */
    @ApiModelProperty("所属门店")
    private Long shopId;


    /**
     * 商品排序值
     */
    @ApiModelProperty("商品排序值")
    private Integer productSort;


    /**
     * 是否上架 0 否 1 是
     */
    @ApiModelProperty("是否上架 0 否 1 是")
    private Boolean isSale;


    /**
     * 是否推荐 0：否 1：是
     */
    @ApiModelProperty("是否推荐 0：否 1：是")
    private Boolean isRecommend;


    /**
     * 是否被删除 0 否 1 是
     */
    @ApiModelProperty("是否被删除 0 否 1 是")
    private Boolean isDelete;


    /**
     * 商品销量
     */
    @ApiModelProperty("商品销量")
    private Integer salesCount;


    /**
     * 商品sku集合，冗余字段
     */
    @ApiModelProperty("商品sku集合，冗余字段")
    private String skuList;

    /**
     * 商品主图
     */
    @ApiModelProperty("商品主图")
    private String productMainImgUrl;

    @ApiModelProperty("商品详情图")
    private String productDetailImgUrl;
    /**
     * 商品详情图片集合，冗余字段
     */
    @ApiModelProperty("商品详情图片集合，冗余字段")
    private String productDetailImgList;


    /**
     * 商品关联的菜单资讯，冗余字段
     */
    @ApiModelProperty("商品关联的菜单资讯，冗余字段")
    private String messageMenuList;


    /**
     * 商品详情文字性描述
     */
    @ApiModelProperty("商品详情文字性描述")
    private String productDetail;

    @ApiModelProperty("运费，适用于运费绑定商品(单位分)")
    private Long freightFee;

    @ApiModelProperty("商品关联URL")
    private String relevantUrl;

    /**
     * 创建人
     */
    @ApiModelProperty("创建人")
    private Long createBy;

    @ApiModelProperty("创建人姓名")
    private String createByName;

    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    private Date createTime;
    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    private String createTimeString;


    /**
     * 最后更新人
     */
    @ApiModelProperty("最后更新人")
    private Long lastUpdateBy;

    /**
     * 库存数量
     */
    @ApiModelProperty("库存数量")
    private Long Inventory;
    /**
     * 库存
     */
    @ApiModelProperty("最后修改时间")
    private Date lastUpdateTime;

    /**
     *  分享描述
     *  @mbggenerated
     */
    @ApiModelProperty("分享描述")
    private String shareDesc;

    /**
     * 是否定时下架(0: 否， 1:是)
     */
    @ApiModelProperty("是否定时下架(0: 否， 1:是)")
    private Integer istaskLowerShelf;

    /**
     * 下架时间
     */
    @ApiModelProperty("下架时间")
    private Date lowerShelfTime;

    /**
     * 下架时间-字符串
     */
    @ApiModelProperty("下架时间-前端展示")
    private String lowerShelfTimeStr;

    /**
     * 商品外部条码(清关使用)
     */
    @ApiModelProperty("商品外部条码(清关使用)")
    private String productOutsideBarcode;

    @ApiModelProperty("产品库存描述")
    private String productAssembleDesc;

    /**
     * sku参数集合
     */
    private List<ProductSkuDto> productSkuDtoList;
    /**
     * 商品图片集合
     */
    private List<BaseImgDto> productImgDtoList;
    /**
     * 商品Banner图片集合
     */
    private List<BaseImgDto> productBannerImgDtoList;

    private List<ProductSpecificationDto> productSpecificationDtoList;

    public Integer getIstaskLowerShelf() {
        return istaskLowerShelf;
    }

    public void setIstaskLowerShelf(Integer istaskLowerShelf) {
        this.istaskLowerShelf = istaskLowerShelf;
    }

    public Date getLowerShelfTime() {
        return lowerShelfTime;
    }

    public void setLowerShelfTime(Date lowerShelfTime) {
        this.lowerShelfTime = lowerShelfTime;
    }

    public String getLowerShelfTimeStr() {
        return lowerShelfTimeStr;
    }

    public void setLowerShelfTimeStr(String lowerShelfTimeStr) {
        this.lowerShelfTimeStr = lowerShelfTimeStr;
    }

    public void  setCreateTimeString(){
        createTimeString = DateUtils.getDateSecondFormat(createTime);

    }


    public Double getMarkerPriceYuan() {
        return NumberUtil.centToYuanForDouble(markerPrice);
    }

    public void setMarkerPriceYuan(Double markerPriceYuan) {
        markerPriceYuan = NumberUtil.centToYuanForDouble(markerPrice);
    }

    public Double getSalesPriceYuan() {
        return NumberUtil.centToYuanForDouble(salesPrice);
    }

    public void setSalesPriceYuan(Double salesPriceYuan) {
        salesPriceYuan =  NumberUtil.centToYuanForDouble(salesPrice);
    }

    public Double getWholesalePriceYuan() {
        return NumberUtil.centToYuanForDouble(wholesalePrice);
    }

    public void setWholesalePriceYuan(Double wholesalePriceYuan) {
        wholesalePriceYuan = NumberUtil.centToYuanForDouble(wholesalePrice);
    }

    public Double getActivePriceYuan() {
        return NumberUtil.centToYuanForDouble(activePrice);
    }

    public void setActivePriceYuan(Double activePriceYuan) {
        activePriceYuan = NumberUtil.centToYuanForDouble(activePrice);
    }

    public Double getFixPriceYuan() {
        return NumberUtil.centToYuanForDouble(fixPrice);
    }

    public void setFixPriceYuan(Double fixPriceYuan) {
        fixPriceYuan = NumberUtil.centToYuanForDouble(fixPrice);
    }

    public String getCreateTimeString(){
        return DateUtils.getDateSecondFormat(createTime);
    }

    public String getProductName() {
        return EmojiUtils.toUnicode(productName);
    }

    public String getProductDescription() {
        return EmojiUtils.toUnicode(productDescription);
    }

    public String getProductDetail() {
        return EmojiUtils.toUnicode(productDetail);
    }

    public String getProductAssembleDesc() {
        return EmojiUtils.toUnicode(productAssembleDesc);
    }

    public void setProductAssembleDesc(String productAssembleDesc) {
        this.productAssembleDesc = productAssembleDesc;
    }
}
